const Lowcode = require('../models/Lowcode');

/**
 * 获取所有 AMIS 配置页面（支持分页）
 * @param {Object} req - Express 请求对象
 * @param {Object} res - Express 响应对象
 */
exports.getAllLowcodePages = async (req, res) => {
  console.log('获取所有 AMIS 配置页面');
  try {
    // 从请求参数中获取 page 和 perPage，如果没有则使用默认值
    const page = parseInt(req.query.page) || 1;
    const perPage = parseInt(req.query.perPage) || 10;

    const pages = await Lowcode.getAll(page, perPage);
    console.log('获取所有 AMIS 配置页面成功:', pages);
    res.json({
      status: 0,
      msg: '获取所有 AMIS 配置页面成功',
      data: {
        page,
        perPage,
        rows: pages
      }
    });
  } catch (error) {
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};

/**
 * 根据 ID 获取单个 AMIS 配置页面
 * @param {Object} req - Express 请求对象
 * @param {Object} res - Express 响应对象
 */
exports.getLowcodePageById = async (req, res) => {
  try {
    const page = await Lowcode.getById(req.params.id);
    if (!page) {
      return res.status(404).json({
        status: 404,
        msg: 'AMIS 配置页面未找到',
        data: null
      });
    }
    res.json({
      status: 0,
      msg: '获取 AMIS 配置页面成功',
      data: page
    });
  } catch (error) {
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};

/**
 * 创建新的 AMIS 配置页面
 * @param {Object} req - Express 请求对象
 * @param {Object} res - Express 响应对象
 */
exports.createLowcodePage = async (req, res) => {
  try {
    const { page_name, config_json } = req.body;
    const pageId = await Lowcode.create(page_name, config_json);
    res.status(201).json({
      status: 0,
      msg: 'AMIS 配置页面创建成功',
      data: { id: pageId }
    });
  } catch (error) {
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};

/**
 * 根据 ID 更新 AMIS 配置页面
 * @param {Object} req - Express 请求对象
 * @param {Object} res - Express 响应对象
 */
exports.updateLowcodePage = async (req, res) => {
  console.log('updateLowcodePage');
  try {
    const { page_name, config_json } = req.body;
    const affectedRows = await Lowcode.update(req.params.id, page_name, config_json);
    if (affectedRows === 0) {
      return res.status(404).json({
        status: 404,
        msg: 'AMIS 配置页面未找到，更新失败',
        data: null
      });
    }
    res.json({
      status: 0,
      msg: 'AMIS 配置页面更新成功',
      data: null
    });
  } catch (error) {
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};

/**
 * 根据 ID 删除 AMIS 配置页面
 * @param {Object} req - Express 请求对象
 * @param {Object} res - Express 响应对象
 */
exports.deleteLowcodePage = async (req, res) => {
  try {
    const affectedRows = await Lowcode.delete(req.params.id);
    if (affectedRows === 0) {
      return res.status(404).json({
        status: 404,
        msg: 'AMIS 配置页面未找到，删除失败',
        data: null
      });
    }
    res.json({
      status: 200,
      msg: 'AMIS 配置页面删除成功',
      data: null
    });
  } catch (error) {
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};